package com.example.supermonkeysm.config;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import org.springframework.context.annotation.Configuration;

@Configuration
public class P6SpyLoggerConfig implements MessageFormattingStrategy {

    /** /**
     * 日志格式化方式（打印SQL日志会进入此方法，耗时操作，生产环境不建议使用）
     *
     * @param connectionId: 连接ID
     * @param now:          当前时间
     * @param elapsed:      花费时间
     * @param category:     类别
     * @param prepared:     预编译SQL
     * @param sql:          最终执行的SQL
     * @param url:          数据库连接地址
     * @return 格式化日志结果
     * 过滤掉定时任务的 SQL
     */

    @Override
    public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) {
        if(StringUtils.isNotBlank(sql)){
            String n ="\n";//换行符
            String consumeTime = " 消耗时间: " + elapsed + "毫秒(ms)";
            String currentTime = " 当前时间: " + now;
            String SQL = sql.replaceAll("[\\s]+", " ")
                    .replaceAll("FROM",n + "FROM")
                    .replaceAll("INNER JOIN",n + "INNER JOIN")
                    .replaceAll("WHERE",n + "WHERE");
            String executeSQL = " 执行的SQL语句:" + n + SQL;
            return consumeTime + n + currentTime + n + executeSQL + n;
        }else return "没有执行SQL语句";
    }
}
